package com.iwhalecloud.bss.kite.cucc.client.api.goods;

import com.iwhalecloud.bss.kite.client.dto.DataResult;
import com.iwhalecloud.bss.kite.cucc.client.dto.goods.AttrDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.goods.GoodPriceReqDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.goods.GoodsCategroyInfoDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.goods.GoodsDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.goods.GoodsMemberDTO;

import java.util.List;
import java.util.Map;

public interface IGoodsService {

    /**
     * 查询商品分类列表
     *
     * @return
     */
    List<GoodsCategroyInfoDTO> queryGoodsCategroyInfo(String goodsProvince);

    /**
     * @param categroyCode 分类code  必传
     * @param goodsName    非必传
     * @return
     */
    List<GoodsDTO> queryGoodsListInCategroy(String categroyCode, String goodsName);

    /**
     * @param categroyCode 分类code  必传
     * @param goodsName    非必传
     * @param provinceId   省份ID必传
     * @return 商品集合
     */
    List<GoodsDTO> queryGoodsListInCategroy(String categroyCode, String goodsName, String provinceId);


    /**
     * 查询商品关键属性
     *
     * @return
     */
    DataResult<List<AttrDTO>> queryGoodKeyAttrs(String goodsSku);

    /**
     * 查询商品属性
     *
     * @param goodsSku
     * @return
     */
    DataResult<List<AttrDTO>> queryGoodAttrs(String goodsSku);

    /**
     * 查询商品价格
     *
     * @return
     */
    DataResult<String> queryGoodPrice(GoodPriceReqDTO goodPriceReqDTO);

    /**
     * 查询收发端成员
     *
     * @return
     */
    DataResult<List<GoodsMemberDTO>> queryGoodsMember(String goodsSku);

    /**
     * 查询收发端成员
     *
     * @return
     */

    List<GoodsDTO> queryBaseGoodsInfoNew(String goodsName, String categroyCode);

    /**
     * 查询商品详情
     * 推荐使用{@link IGoodsService#queryGoodsByOfferIdAndProvince(String, String)}进行获取商品详情
     *
     * @return
     */
    Map<String, Object> queryGoodsByOfferId(String goodsSku);

    /**
     * 根据省份查询商品详情
     * 推荐使用{@link IGoodsService#queryGoodsByOfferIdAndProvince(String, String)}进行获取商品详情
     *
     * @return 商品详情
     */
    Map<String, Object> queryGoodsByOfferIdAndProvince(String goodsSku);

    Map<String, Object> queryGoodsByOfferIdAndProvince(String goodsSku, String provinceId);

    DataResult<List<AttrDTO>> queryGoodKeyAttrsByProvince(String goodsSku);

    DataResult<List<AttrDTO>> queryGoodKeyAttrsByProvince(String goodsSku, String provinceId);

    DataResult<List<AttrDTO>> queryGoodsAttrsByProvince(String goodsSku);

    /**
     * 查询收藏商品分类列表
     *
     * @return
     */
    List<Map<String, Object>> queryFavoriteGoodsList(String goodsName);

    /***
     * Description: 将销售品添加到收藏夹中<br>
     *
     * @author tengg<br>
     * @taskId <br>
     * @param offerId
     * @return
     */
    Map<String, Object> operateFavoritesOffers(String offerId, String actionType);

    /***
     * Description: 操作最近受理商品<br>
     *
     * @author tengg<br>
     * @taskId <br>
     * @param offerId
     * @return
     */
    Map<String, Object> operateLatestAcceptGoods(String staffId, String orgId, String postId, String sceneInstId);

    /**
     * 查询最近受理商品
     *
     * @return
     */
    List<GoodsDTO> queryLatestAcceptList();

    /**
     * 根据SKU查询SPU
     *
     * @param goodSku
     * @return
     */
    String getPromotionOfferId(String goodSku);

    /**
     * 云业务查询分类
     *
     * @param categroyCode 分类code  必传
     * @param goodsName    非必传
     * @return
     */
    List<GoodsDTO> queryGoodsListInCategroyCloud(String categroyCode, String goodsName);


    /**
     * 查询商品分类列表
     *
     * @return
     */
    List<Map> queryGoodsCategroyLastStageInfo(String goodsProvince);

    /**
     * app甩单商品关键属性查询
     *
     * @param orderId
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author zhang.song
     * @date 2021-08-17 18:03
     */
    Map<String, Object> queryAppOrderGoodAttrs(String orderId);
}
